package com.itheima.controller;

import com.itheima.common.R;

import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.UUID;

@RestController
@RequestMapping("/common")
public class CommonController {
    @Value("${reggie.path}")
    private String basePath;
    //文件下载
    //获取文件的名字  ,从本地 输入流获取图片 ,通过响应输出流 将文件 传输到页面
    @GetMapping("download")
    public void download(String name , HttpServletResponse response) throws IOException {
        //文件输入流 获取文件
        FileInputStream inputStream = new FileInputStream(basePath+name);
        //响应输出流将文件响应到浏览器
        ServletOutputStream outputStream = response.getOutputStream();
        //文件拷贝 将输入流的文件拷贝到输出流
        IOUtils.copy(inputStream, outputStream);
        //关流
        inputStream.close();
    }

    //文件上传
    // 三要数1,使用post请求 (get方式提交有大小限制,post没有)2,(get方式提交有大小限制,post没有)3.(get方式提交有大小限制,post没有)
    //1.获取到浏览器传递过来的文件 保存到本地服务器 ,
    //2.动态 创建本地文件夹
    //3.将上传的文件名进行跟换 避免出现重复文件名被覆盖 ,获取到文件的后缀
    //4.保存到本地后将改文件名 响应给页面
    @PostMapping("upload")
    public R upload(MultipartFile file) throws IOException {//MultipartFile file 参数必须跟页面传递的对应
        //创建 本地文件夹
        File file1 = new File(basePath);
        //进行判断是否存在改文件不存在就需要创建
        if (!file1.exists()) {
            file1.mkdirs();
        }
        //获取上传过来的文件后缀 并生成新的名字
        String originalFilename = file.getOriginalFilename();
        //获取后缀
        String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
        //生成新的id
        String fileName = UUID.randomUUID().toString()+suffix;
        //将上传的文件保存到本地
        file.transferTo(new File(basePath+fileName));
        //将文件名字响应给页面
        return R.success(fileName);
    }


}
